// 题目：实现库存管理类与接口 
// 应用场景：在企业的仓储管理中，需要对库存进行精确的管理和监控。 
// 需求： 
// ● 定义一个接口Stock，包含属性productId（产品编号）、quantity（库存数量）。 
// ● 定义一个接口StockService，包含方法：
//   ○ getStockByProductId(productId: number): Stock | null（根据产品编号获取库存信息）、
//   ○ updateStock(productId: number, newQuantity: number): void（更新特定产品的库存数量）、
//   ○ addProductToStock(product: Stock): void（向库存中添加产品）。 
// ● 实现一个类StockServiceImpl来实现StockService接口，对库存进行具体的操作管理。

interface Stock {
    productId: number
    quantity: number
}

interface StockService {
    getStockByProductId(productId: number): Stock | null
    updateStock(productId: number, newQuantity: number): void
    addProductToStock(product: Stock): void
}

class StockServiceImpl implements StockService {
    private stocks: Stock[] = []

    // 根据产品编号获取库存信息
    getStockByProductId(productId: number) {
        return this.stocks.find(stock => stock.productId === productId) || null
    }

    updateStock(productId: number, newQuantity: number) {
        const stock = this.getStockByProductId(productId)
        if (stock) {
            stock.quantity = newQuantity
        }
    }

    addProductToStock(product: Stock) {
        const stock = this.getStockByProductId(product.productId)
        if (stock) {
            stock.quantity += product.quantity
        }else{
            this.stocks.push(product)   
        }
    }
}